/*
* Copyright 2011 Pavel Kozhin 
*
* Licensed under the Apache License, Version 2.0 (the "License"); 
* you may not use this file except in compliance with the License. 
* You may obtain a copy of the License at 
* 
* http://www.apache.org/licenses/LICENSE-2.0
* 
* Unless required by applicable law or agreed to in writing, software 
* distributed  under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
* See the License for the specific language governing permissions and 
* limitations under the License.
*
* Author: Pavel Kozhin.
*/
package org.etherframework.core.module
{
	import flash.errors.IllegalOperationError;
	
	import org.etherframework.core.bridge.IBridge;
	import org.etherframework.core.bridge.IBridgeFacades;
	
	[ExcludeClass]
	public class ModulePart implements IModulePart
	{
		protected var bridge:IBridge;
		
		private var _completed:Boolean;
		
		public function init(bridge:IBridge):void
		{
			if (this.bridge)
				throw new IllegalOperationError("IModulePart " + 
					this + " is already initialized.");
			
			this.bridge = bridge;
		}
		
		public function complete():void
		{
			if (_completed)
				throw new IllegalOperationError("IModulePart is already completed.");
			
			_completed = true;
		}
		
		public function getFacade(owner:IBridgeFacades):IModulePartFacade
		{
			throw new IllegalOperationError("This method must be overridden.");
		}
		
		public function destroy():void
		{
			throw new IllegalOperationError("It should be overridden.");
		}
	}
}